﻿using GDM.Hogar.Entidades;
using GDM.Hogar.Repositorios.Contratos;
using GDM.Hogar.Repositorios.Core;
using GDM.Hogar.Repositorios.Soporte;
using System.Collections.Generic;
using System.Data;

namespace GDM.Hogar.Repositorios
{
    public class TareaRepositorio : Repositorio, ITareaRepositorio
    {
        public TareaRepositorio(IDbManager dbManager)
            : base(dbManager)
        {
        }

        protected override string ProcActualizar
        {
            get
            {
                return ProcedimientosAlmacenados.Tarea.Actualizar;
            }
        }

        protected override string ProcInsertar
        {
            get { return ProcedimientosAlmacenados.Tarea.Insertar; }
        }

        public IList<Tarea> ObtenerTareas()
        {
            IList<Parametro> parametros = new List<Parametro>();
            return Obtener<Tarea>(ProcedimientosAlmacenados.Tarea.ObtenerTodas, parametros);
        }

        public Tarea CrearTarea(string nombre, int diasAnticipacion)
        {
            IList<Parametro> parametros = new List<Parametro>();
            parametros.Add(CrearParametro("@Nombre", DbType.String, ParameterDirection.Input, nombre));
            if (diasAnticipacion > 0)
                parametros.Add(CrearParametro("@DiasAnticipacion", DbType.String, ParameterDirection.Input, diasAnticipacion));
            return Insertar<Tarea>(parametros);
        }

        public void ActivarTarea(int tareaId, bool activo)
        {
            IList<Parametro> parametros = new List<Parametro>();
            parametros.Add(CrearParametro("@TareaId", DbType.Int64, ParameterDirection.Input, tareaId));
            parametros.Add(CrearParametro("@Activo", DbType.Boolean, ParameterDirection.Input, activo));
            EjecutarConsulta(ProcedimientosAlmacenados.Tarea.Activar, parametros);
        }

        public void ActualizarTarea(Tarea tarea)
        {
            IList<Parametro> parametros = new List<Parametro>();
            parametros.Add(CrearParametro("@TareaId", DbType.Int64, ParameterDirection.Input, tarea.TareaId));
            parametros.Add(CrearParametro("@Nombre", DbType.String, ParameterDirection.Input, tarea.Nombre));
            if (tarea.DiasAnticipacion > 0)
                parametros.Add(CrearParametro("@DiasAnticipacion", DbType.Int64, ParameterDirection.Input, tarea.DiasAnticipacion));
            Actualizar(parametros);
        }
    }
}